package three;

abstract class Animals {
    String name;
    int age;
    String color;
    Animals(String name,int age,String color){
        this.name = name;
        this.age  = age;
        this.color = color;
    }
    abstract void eat();               //之所以要用抽象方法，是让子类可以继承，然后重写，最后使用  Animals cat = new Cat（）；调用的时候就没有错误

}
interface swim {
    public abstract void youYong(); //默认有public abstract，可以不写
    void swim();
}

class Cat extends Animals implements swim{          //先继承父类再实现接口（extends 在 implements 前面）
    Cat(String name, int age, String color){
        super(name,age,color);
    }


    void eat() {
        System.out.println(color+"色的"+age+"岁的狗狗"+name+"正在吃肯头...");
    }

    public void swim(){                              //重写接口中的方法时，必须加上public
        System.out.println(color+"色的"+age+"岁的狗狗"+name+"在游泳！");
    }
    public void youYong(){                              //重写接口中的方法时，必须加上public
        System.out.println("i am swimming!");
    }
}



public class Interface {
    public static void main(String[] args) {
        Animals cat = new Cat("花花",3,"黑");
        cat.eat();
        //cat.swim();                       //这是Cat类中重写swim接口中的方法，用 Animals cat = new Cat（）；不能调用，要用Cat cat = new Cat();
        System.out.println(cat.color);






    }
}
